package com.rainszj.mapper;

import com.rainszj.pojo.po.BlogAndTag;
import com.rainszj.pojo.po.Tag;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 标签数据访问层
 *
 * @author rainszj
 * 2020/3/13
 */
@Repository
public interface TagMapper {

    /**
     * 保存标签
     *
     * @param tag
     * @return
     */
    int saveTag(Tag tag);

    /**
     * 根据 ID移除标签
     *
     * @param id
     * @return
     */
    int removeTag(@Param("id") Long id);

    /**
     * 通过 tagId删除 BlogAndTag
     *
     * @param tagId
     * @return
     */
    int removeBlogAndTag(@Param("tid") Long tagId);

    /**
     * 根据 Id 修改标签
     *
     * @param id
     * @param tag
     * @return
     */
    int updateTag(@Param("id") Long id, @Param("tag") Tag tag);


    /**
     * 根据 ID 查询标签
     *
     * @param id
     * @return
     */
    Tag queryTagById(@Param("id") Long id);

    /**
     * 根据标签名称查询
     *
     * @param name
     * @return
     */
    Tag queryTagByName(@Param("name") String name);

    /**
     * 与 Blog表做连接查询
     *
     * @return
     */
    List<Tag> listAllTag();

    /**
     * 查询管理的所有标签
     *
     * @return
     */
    List<Tag> listAdminTag();

    /**
     * 查询 BlogAndTag 表中是否存在已有的主键
     *
     * @param tagId
     * @param blogId
     * @return
     */
    BlogAndTag queryBlogAndTag(@Param("tid") Long tagId, @Param("bid") Long blogId);


}
